package com.ruoyi.service.archives.impl;

import com.ruoyi.domain.archives.PInfo;
import com.ruoyi.mapper.archives.PInfoMapper;
import com.ruoyi.service.archives.PInfoService;
import com.ruoyi.service.file.PFileInfoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * @Author lz
 * @Version 1.0
 * @Company 滁州大健康与养老产业研究院
 * @ClassName PInfoServiceImpl
 * @Description TODO
 * @Date 2022/05/28 8:37
 */
@Service
public class PInfoServiceImpl implements PInfoService {

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());


    @Value("${minio.bucketName}")
    private String bucketName;
    @Resource
    private PInfoMapper infoMapper;
    @Resource
    private PFileInfoService fileInfoService;


    /**
     *  分页模糊查询所有猪的信息
     * @param pInfo 猪信息
     * @return 所有猪的信息
     */
    @Override
    public List<PInfo> getAllInfo(PInfo pInfo) {
        return infoMapper.getAllInfo(pInfo);
    }

    /**
     * 添加猪的信息
     * @param pInfo 猪的信息
     * @return 受影响行数
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addPigInfo( PInfo pInfo) {
        pInfo.setCreateTime(new Date());
        // 根据猪耳标判断猪是否已经存在
        int reslut = hasPInfo(pInfo.getEarTag());
        if (reslut > 0) {
            logger.info("猪儿标已经存在，无法重复添加 =======> {}",pInfo.getEarTag());
            return 501;
        }
        // 上传成功后添加信息到文件记录表
        return infoMapper.addPigInfo(pInfo);
    }

    /**
     * 根据id删除猪的信息
     * @param id 猪id
     * @return 受影响的行数
     */
    @Override
    public int removePigInfoById(Long[] id) {
        return infoMapper.removePigInfoById(id);
    }

    /**
     * 更新猪的信息
     * @param pInfo 猪的信息
     * @return 受影响的行数
     */
    @Override
    public int putPingInfo(PInfo pInfo) {
        return infoMapper.putPingInfo(pInfo);
    }

    /**
     * 根据猪耳标判断猪是否已经存在
     * @param earTag 猪耳标
     * @return 结果
     */
    @Override
    public int hasPInfo(String earTag) {
        return infoMapper.hasPInfo(earTag);
    }
}
